var fieldsDict = {
    'id': 'Номер', 
    'artist': 'Исполнитель', 
    'title': 'Название', 
    'weight': 'Рейтинг', 
    'avWeight': 'Средний рейтинг', 
    'count': 'Кол-во<br>проигрываний', 
    'tracks': 'Кол-во песен', 
    'bmcount': 'Закладок', 
    'tagslist': 'Список тегов'
};

function getRequestBody(requestType) {
    var requestBody = {};
    if (requestType == 'form') {
        var labelFilter="";
        if ( $('#id_labelFilter1').val() ) {labelFilter+=" "+$('#id_labelFilter1').val();}
        if ( $('#id_labelFilter2').val() ) {labelFilter+=" "+$('#id_labelFilter2').val();}
        if ( $('#id_labelFilter3').val() ) {labelFilter+=" "+$('#id_labelFilter3').val();}

        if ( $('#id_name').val().length<3 && labelFilter=="" && $('#id_bookmarkId').val()=='') {
            alert('Не менее трех символов для поиска или выберите фильтр по тегам!'); breakQuery = true;
        };

        var requestBody = {
                name: $('#id_name').val(), 
                order: $('#id_order').val(), 
                orderDir: $('#id_orderDir').val()
            };

        if (labelFilter!="") requestBody['labelFilter'] = labelFilter;
        if ( $('#id_vocals').val() ) requestBody['vocals'] = $('#id_vocals').val();
        if ( $('#id_lang').val() ) requestBody['lang'] = $('#id_lang').val();
        if ( $('#id_bookmarkId').val() ) requestBody['bookmarkId'] = $('#id_bookmarkId').val();
    }
    else {
        var specRequests = "popularArtists, newTracksPlayed, forgottenTracks, bestCalmTracks, bestCovers, neverPlayedArtists, neverPlayedTracks";
        if (specRequests.indexOf(requestType)!==false) {
            requestBody = {spec: requestType};
        };
    };
    return requestBody;
};

function getPermalink(requestBody) {
    var link = "http://tmrweb.ikito.ru/search/?"
    for (key in requestBody) {
        var value = $.trim(requestBody[key]);
        if (key!='ajax' && value!="" && value!=" ") {
            link+=key+'='+value+'&';
        };
    };
    //link+="permalink=1";
    return link;
};

function sendRequest(requestType) {
    var breakQuery = false;
    var requestBody = getRequestBody(requestType);
    requestBody['ajax'] = 1;
    if (!breakQuery) {
        $.ajax({
            url: '/search/',
            type: "GET",
            //beforeSend: function(){loaderShow();},
            //complete: function(){loaderHide();},
            data: (requestBody),
            dataType: "json",
            success: function(data){
                showInfo(data);
                $('#permalinkDiv').show();
                var link = getPermalink(requestBody);
                $('#permalink').attr('value', link);
                $('#shortenClck').attr('href', 'http://clck.ru/--?url='+link);
            }
        });
    };
}

function showInfo(data) {
    var fields = data['fields'];
    var data = data['data'];
    var tableHtml = "<table border=1 style='max-width: 1000px;'>";
    tableHtml+="<tr><th></th>";
    for (num in fields) {
        if (fieldsDict[fields[num]]) {field = fieldsDict[fields[num]];} else {field = fields[num]}
        tableHtml+="<th>"+field+"</th>";
    };
    tableHtml+="</tr>";
    n = 1
    if (data.length>0) {
        for (num in data) {
            var row = data[num]
            tableHtml+="<tr>";
            tableHtml+="<th>"+n+"</th>";
            for (num in fields) {
                field = fields[num];
                if (field == 'id') {
                    func = 'queue_track('+row[field]+'); return false;'
                    row[field] = "<a title='Заказать трек' href=# onclick='"+func+"'>"+row[field]+"</a>"
                };
                if (field == 'tagslist') {
                    row[field] = row[field].replace(new RegExp(',', 'g'),', ');};
                if (field == 'artist') {
                    func = 'filterAuthor("'+row[field]+'"); return false;'
                    row[field] = "<a href='#' onclick='"+func+"'>"+row[field]+"</a>"
                };
                tableHtml+="<td>"+row[field]+"</td>";
            };
            tableHtml+="</tr>"
            n+=1;
        };
        tableHtml+="</table>";
        $("#infoTable").html(tableHtml)
    } else {$("#infoTable").html('<table width=400><tr><th>Ничего не найдено...</th></tr><tr><th>Или на самом деле нет результатов, или кто-то занял базу, попробуйте через пару секунд еще раз.</th></tr></table>');};
}

function filterAuthor(author) {
    $('#id_name').attr('value', author);
    sendRequest('form');
}

function queue_track(track_id) {
    $.ajax({
        url: '/tmradio/queue/'+track_id,
        type: "GET",
        //beforeSend: function(){loaderShow();},
        //complete: function(){loaderHide();},
        dataType: "json",
        success: function(data){
            if (data.status == 'ok') {
                msg = "Трек "+track_id+" заказан.";
            } else {
                msg = "Не удалось заказать трек...";
                console.log("got result: %o", data);
            };
            flash_message(msg, "#flash_messages");
        }
    });
}

function flash_message(text, el_selector, timeout) {
    if (timeout == undefined) timeout=3000;
    el = $(el_selector);
    el.html(text);
    el.fadeIn('slow');
    setTimeout( function(){$(el_selector).fadeOut('slow')}, timeout);
}